iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Software Development

超簡單的 Verilog 入門講解系列 第 13

[Day 13] Verilog E-1 難度丁 P1王點斬殺2 - tb1 時序組合 (clk 的 tb)

  • 分享至 

  • xImage
  •  

我們這次來測試 Day 12 的tb1

第1步: Day 12 的程式碼

之前Day 12 的程式碼


module Clk_Add1(reset1,clk,Out1);
input reset1 ,clk;
output[7:0] Out1;
reg[7:0] Out1;

wire[7:0] Date;
assign Date = Out1+1;

always@(negedge reset1 or posedge clk)
begin

if( ~reset1) begin
    Out1<=0;
end
else begin

    Out1<=Date;
    
end


end

endmodule 

第2步: tb 的參數

我們先寫 tb
幾個簡單的想法

  1. reset1 跟 clk,再輸入上是 reg (這裡不理解我在講解)
  2. 輸出就是不可以調整 我們就寫成線路 wire

module tb1();

reg reset1 ,clk;
wire[7:0] Out1;

endmodule

第3步: Clk作用

寫一下 Clk 執行方式 每 100 格 作為一週期


module tb1();

reg reset1 ,clk;
wire[7:0] Out1;


// Clk 執行方式 每 100 格 作為一週期
always #50 clk<=~clk;

endmodule

第4步: initial

寫一下 initial 執行方式


module tb1();

reg reset1 ,clk;
wire[7:0] Out1;


// initial
initial begin


end




always #50 clk<=~clk;

endmodule

第5步: 設定 reset

寫一下 reset 在 70格執行


module tb1();

reg reset1 ,clk;
wire[7:0] Out1;


// initial
initial begin

reset1 <= 0 ;
clk <= 0 ;
# 70;



end




always #50 clk<=~clk;

第6步: 設定 reset 打開之後

寫一下 reset 打開


module tb1();

reg reset1 ,clk;
wire[7:0] Out1;

Clk_Add1 test(
.reset1(reset1),
.clk(clk),
.Out1(Out1)
);



initial begin


reset1 <= 0 ;
clk <= 0 ;
# 70;

reset1 <= 1 ;
# 2000;

 $stop;



end

always #50 clk<=~clk;

endmodule

恩恩 大概就這樣

看看結果吧
https://ithelp.ithome.com.tw/upload/images/20220926/20135862AyLy4NmFC0.png

結果自己來分析看看喔

好了第一關卡通過了 滿簡單的吧

単装砲って、何気にわびさびよね~


上一篇
[Day 12] Verilog E-1 難度丁 P1王點斬殺1 - 時序組合
下一篇
[Day 14] Verilog E-1 難度丁 P2海域的探路 - always、reset、 case
系列文
超簡單的 Verilog 入門講解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言